611. 有效三角形的个数

611. 有效三角形的个数

Similar Question

leading to the advanced question

Solution Tips

与三叔之和不同, 这里的是不等关系, 所以不能找到明确的 left 和 right 做排除关系

需要找到区间范围

方案一: 双指针

p9O9kFS.png

var triangleNumber = function(nums) {
    const n = nums.length;
    nums.sort((a, b) => a - b);
    let ans = 0;
    for (let i = 0; i < n; ++i) {
        let k = i;
        for (let j = i + 1; j < n; ++j) {
            while (k + 1 < n && nums[k + 1] < nums[i] + nums[j]) {
                ++k;
            }
            ans += Math.max(k - j, 0);
        }
    }
    return ans;
};